A multiprocessor system (hereinafter “system”) includes a number of processing units. For configuring these units, a communication link, with each unit, capable of interacting with resources external to the multiprocessor system is required. Often extra real estate on silicon is required to provide these communication links. In many cases, not all the processing units of the system are required to interact with the resources external to the system. In such cases, the sole purpose of the communication link remains limited to configuration of the processing unit. Providing for a communication link on the silicon for a single purpose is not only area inefficient but also, expensive affair.
Moreover, upgradation of these systems may involve updating of on board memory where the non-volatile code resides. This updating of on board memory may result in loss and/or alteration of data that may be required by the processing unit which is being upgraded.
Therefore, such systems are difficult to reconfigure for new functionalities and require use of sophisticated programming techniques, like JTAG (Joint Test Action Group), spy Bi-ware, Universal Asynchronous Receiver Transmitter (UART) based programming etc.
In a typical example, when the processing unit is a microcontroller, size of onboard memory may present constraints to the upgradation process. In addition, handling of interrupts may be a difficult task while reconfiguration/upgradation of the microcontroller. These complexities generally make it difficult for an end user to reconfigure or upgrade the processing unit and invoke requirement of a service person to handle the matter.